package tpase.GlobalServer.VO;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageCodec;
import tpase.util.Util;

import java.util.List;

public class MessageCode extends ByteToMessageCodec<Message> {

    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, Message message, ByteBuf byteBuf) throws Exception {
        String json = Util.toJson(message);
        byte[] bytes = json.getBytes();
        byteBuf.writeInt(bytes.length);
        byteBuf.writeBytes(bytes);


    }

    @Override
    protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list) throws Exception {
        int length = byteBuf.readInt();

        byte[] bytes = new byte[length];
        byteBuf.readBytes(bytes, 0, length);
        String json = new String(bytes);
        Message message = Util.jsonToObject(json, Message.class);

        list.add(message);
    }
}
